package com.idealighter.game.core.util;

import com.idealighter.utils.code.RandCodeUtil;

/**
 * 汉语姓名生成器.
 *
 */
public class NameMaker {
  private NameMaker() {}

  static String[] familyNames = { "爱新觉罗", "赵", "钱", "孙", "李", "周", "吴", "郑", "王", "冯", "陈", "楮",
      "卫", "蒋", "沈", "韩", "杨", "朱", "秦", "尤", "许", "何", "吕", "施", "张", "孔", "曹", "严", "华", "金", "魏",
      "陶", "姜", "戚", "谢", "邹", "喻", "柏", "水", "窦", "章", "云", "苏", "潘", "葛", "奚", "范", "彭", "郎", "鲁",
      "韦", "昌", "马", "苗", "凤", "花", "方", "俞", "任", "袁", "柳", "酆", "鲍", "史", "唐", "费", "廉", "岑", "薛",
      "雷", "贺", "倪", "汤", "滕", "殷", "罗", "毕", "郝", "邬", "安", "常", "乐", "于", "时", "傅", "皮", "卞", "齐",
      "康", "伍", "余", "元", "卜", "顾", "孟", "平", "黄", "和", "穆", "萧", "尹", "姚", "邵", "湛", "汪", "祁", "毛",
      "禹", "狄", "米", "贝", "明", "臧", "计", "伏", "成", "戴", "谈", "宋", "茅", "庞", "熊", "纪", "舒", "屈", "项",
      "祝", "董", "梁", "杜", "阮", "蓝", "闽", "席", "季", "麻", "强", "贾", "路", "娄", "危", "江", "童", "颜", "郭",
      "梅", "盛", "林", "刁", "锺", "徐", "丘", "骆", "高", "夏", "蔡", "田", "樊", "胡", "凌", "霍", "虞", "万", "支",
      "柯", "昝", "管", "卢", "莫", "经", "房", "裘", "缪", "干", "解", "应", "宗", "丁", "宣", "贲", "邓", "郁", "单",
      "杭", "洪", "包", "诸", "左", "石", "崔", "吉", "钮", "龚", "程", "嵇", "邢", "滑", "裴", "陆", "荣", "翁", "荀",
      "羊", "於", "惠", "甄", "麹", "家", "封", "芮", "羿", "储", "靳", "汲", "邴", "糜", "松", "井", "段", "富", "巫",
      "乌", "焦", "巴", "弓", "牧", "隗", "山", "谷", "车", "侯", "宓", "蓬", "全", "郗", "班", "仰", "秋", "仲", "伊",
      "宫", "宁", "仇", "栾", "暴", "甘", "斜", "厉", "戎", "祖", "武", "符", "刘", "景", "詹", "束", "龙", "叶", "幸",
      "司", "韶", "郜", "黎", "蓟", "薄", "印", "宿", "白", "怀", "蒲", "邰", "从", "鄂", "索", "咸", "籍", "赖", "卓",
      "蔺", "屠", "蒙", "池", "乔", "阴", "鬱", "胥", "能", "苍", "双", "闻", "莘", "党", "翟", "谭", "贡", "劳", "逄",
      "姬", "申", "扶", "堵", "冉", "宰", "郦", "雍", "郤", "璩", "桑", "桂", "濮", "牛", "寿", "通", "边", "扈", "燕",
      "冀", "郏", "浦", "尚", "农", "温", "别", "庄", "晏", "柴", "瞿", "阎", "充", "慕", "连", "茹", "习", "宦", "艾",
      "鱼", "容", "向", "古", "易", "慎", "戈", "廖", "庾", "终", "暨", "居", "衡", "步", "都", "耿", "满", "弘", "匡",
      "国", "文", "寇", "广", "禄", "阙", "东", "欧", "殳", "沃", "利", "蔚", "越", "夔", "隆", "师", "巩", "厍", "聂",
      "晁", "勾", "敖", "融", "冷", "訾", "辛", "阚", "那", "简", "饶", "空", "曾", "毋", "沙", "乜", "养", "鞠", "须",
      "丰", "巢", "关", "蒯", "相", "查", "后", "荆", "红", "游", "竺", "权", "逑", "盖", "益", "桓", "公", "万俟",
      "司马", "上官", "欧阳", "夏侯", "诸葛", "闻人", "东方", "赫连", "皇甫", "尉迟", "公羊", "澹台", "公冶", "宗政", "濮阳",
      "淳于", "单于", "太叔", "申屠", "公孙", "仲孙", "轩辕", "令狐", "锺离", "宇文", "长孙", "慕容", "鲜于", "闾丘", "司徒",
      "司空", "丌官", "司寇", "仉", "督", "子车", "颛孙", "端木", "巫马", "公西", "漆雕", "乐正", "壤驷", "公良", "拓拔", "夹谷",
      "宰父", "谷梁", "晋", "楚", "阎", "法", "汝", "鄢", "涂", "钦", "段干", "百里", "东郭", "南门", "呼延", "归", "海",
      "羊舌", "微生", "岳", "帅", "缑", "亢", "况", "後", "有", "琴", "梁丘", "左丘", "东门", "西门", "商", "牟", "佘",
      "佴", "伯", "赏", "南宫", "墨", "哈", "谯", "笪", "年", "爱", "阳", "佟" };
  static String[] boyNames =
      { "绍祖", "继祖", "孝先", "敬先", "成祖", "广嗣", "延嗣", "裕孙", "蕃孙", "绍箕", "绍袭", "绳武", "克武", "继业", "显祖",
          "亮祖", "光祖", "延祖", "怀祖", "念祖", "怡祖", "悦祖", "建国", "振国", "兴国", "济世", "柱国", "扶中", "爱民", "民子",
          "泽民", "民生", "公朴", "景贤", "慕圣", "慕东", "希孟", "华东", "希晏", "希圣", "希周", "宗尼", "成才", "博学", "勇军",
          "前进", "连良", "学忠", "宗仁", "学智", "克勤", "宗谦", "德良", "尚德", "书诚", "正直", "德福", "德友", "长寿", "长龄",
          "长生", "长庚", "康生", "平安", "彭寿", "延寿", "益寿", "龟龄", "龟寿", "介官", "有官", "太山", "秀才", "富贵", "财旺",
          "有财", "进财", "盛富", "金银", "宝玉", "虎豹", "虎子", "大虎", "二虎", "山虎", "山豹", "长空", "天宇", "万里", "江山",
          "高山", "山峰", "大海", "长河", "刚", "正", "直", "真", "钢", "铁", "金", "铜", "银", "石", "山", "木", "虎",
          "豹", "志强", "志坚", "志刚", "铁民", "大力", "如山", "如刚", "千均", "铁柱", "刚强", "劲松", "劲草", "浪舟", "海鸥",
          "旭东", "大春", "石峰", "浩天", "浩然", "石泉", "百坚", "博", "木树", "能辉", "敏雄", "龙彬", "锐", "无忌" };
  static String[] girlNames = { "秀秀", "娟娟", "英子", "晓慧", "巧佳", "美丽", "娜娜", "静静", "丽丽", "秀", "娟", "英",
      "华", "慧", "巧", "美", "娜", "静", "淑", "惠", "珠", "翠", "雅", "芝", "玉", "萍", "红", "娥", "玲", "芬", "芳",
      "燕", "彩", "春", "菊", "兰", "凤", "洁", "梅", "琳", "素", "云", "莲", "真", "环", "雪", "荣", "爱", "妹", "霞",
      "香", "月", "莺", "媛", "艳", "瑞", "凡", "佳", "嘉", "琼", "勤", "珍", "贞", "莉", "桂", "娣", "叶", "璧", "璐",
      "娅", "琦", "晶", "妍", "茜", "秋", "珊", "莎", "锦", "黛", "青", "倩", "婷", "姣", "婉", "娴", "瑾", "颖", "露",
      "瑶", "怡", "婵", "雁", "蓓", "纨", "仪", "荷", "丹", "蓉", "眉", "君", "琴", "蕊", "薇", "菁", "梦", "岚", "苑",
      "婕", "馨", "瑗", "琰", "韵", "融", "园", "艺", "咏", "卿", "聪", "澜", "纯", "毓", "悦", "昭", "冰", "爽", "琬",
      "茗", "羽", "希", "宁", "欣", "飘", "育", "滢", "馥", "筠", "柔", "竹", "霭", "凝", "晓", "欢", "霄", "枫", "芸",
      "菲", "寒", "伊", "亚", "宜", "可", "姬", "舒", "影", "荔", "枝", "思", "丽" };

  /**
   * 生成姓名.
   * @return .
   */
  public static String generateName() {
    StringBuilder fullName = new StringBuilder(5);
    fullName.append(familyNames[RandCodeUtil.random(501)]);
    fullName.append(RandCodeUtil.randomBoolean() ? boyNames[RandCodeUtil.random(136)]
        : girlNames[RandCodeUtil.random(158)]);

    return fullName.toString();
  }

}
